Functional Programming in Practice with Kotlin